#ifndef SOMMET_H
#define SOMMET_H

#include "point.h"

/*
 *  @autheur : LEMOUEL Florian
 *  @date : 25.03.2013
 *  @version 1.0 : création de la classe complète
 */


/*
 * Classe représentant un sommet en 3D
 * Un sommet est un point auquel on rajoute des coordonnées u,v des textures.
 */
class Sommet
{
    //--------------------- Constructeurs et destructeur -------------------
public:

    //Constructeur par défault
    Sommet();

    //Constructeur à 5 paramètres
    Sommet(GLfloat x, GLfloat y, GLfloat z, GLfloat u, GLfloat v);

    //Constructeur à 3 paramètres
    Sommet(Point& p, GLfloat u, GLfloat v);

    //Constructeur de recopie
    Sommet(const Sommet& s);

    //Destructeur du sommet
    ~Sommet();
    //----------------------------------------------------------------------
    //--------------------- Méthodes ---------------------------------------

    //----------------------------------------------------------------------

    //--------------------- Accesseurs -------------------------------------
public:

    //On renvoie la coordonnée en u
    GLfloat getU();

    //On renvoie la coordonnée en v
    GLfloat getV();

    //On renvoie le point du sommet
    Point& getPoint();

    //On renvoie la coordonée en x
    GLfloat getX();

    //On renvoie la coordonée en y
    GLfloat getY();

    //On renvoie la coordonée en z
    GLfloat getZ();

    //On affecte u
    void setU(GLfloat u);

    //On affecte y
    void setV(GLfloat v);

    //----------------------------------------------------------------------
    //--------------------- Surcharge des opérateurs -----------------------


    //----------------------------------------------------------------------
    //--------------------- Attributs --------------------------------------
protected:
    //Position du sommet
    Point* _point;

    //Coordonnées texturelles du sommet
    GLfloat _u;
    GLfloat _v;


    //----------------------------------------------------------------------
};

#endif // SOMMET_H

